import os, shutil
from typing import Tuple
from src.core import log


def safe_remove(path: str, is_dir: bool = False) -> Tuple[bool, str]:
    """
    args:
        path: 要删除的文件或目录路径
        is_dir: 是否为目录，默认为False
    return:
        (bool, str): 删除结果的元组，包含布尔值和消息字符串
    """
    if os.path.exists(path):
        if os.path.isfile(path):
            try:
                os.remove(path)
                return True, f"文件 {path} 删除成功"
            except PermissionError:
                log.ERROR(f"没有权限删除文件 {path}")
                return False, f"没有权限删除文件 {path}"
            except OSError as e:
                log.ERROR(f"删除文件时发生系统错误: {e}")
                return False, f"删除文件时发生系统错误: {e}"
        elif os.path.isdir(path):
            if not is_dir:
                log.ERROR(f"路径 {path} 是目录，无法删除")
                return False, f"路径 {path} 是目录，无法删除"
            else:
                try:
                    shutil.rmtree(path)
                    return True, f"目录 {path} 删除成功"
                except PermissionError:
                    log.ERROR(f"没有权限删除目录 {path}")
                    return False, f"没有权限删除目录 {path}"
                except OSError as e:
                    log.ERROR(f"删除目录时发生系统错误: {e}")
                    return False, f"删除目录时发生系统错误: {e}"
    return True, f"{path} 删除成功"
